FastAPI তে Background Tasks ব্যবস্থাপনা একটি শক্তিশালী বৈশিষ্ট্য, যা আপনাকে API রিকোয়েস্টের প্রক্রিয়াকরণের সময় ব্যাকগ্রাউন্ডে কিছু কাজ চালানোর সুযোগ দেয়। এটি বিশেষভাবে তখন উপকারী যখন আপনি দীর্ঘ সময় ধরে চলা কাজ (যেমন ইমেইল পাঠানো, ডাটা প্রসেসিং ইত্যাদি) করতে চান, তবে ক্লায়েন্টকে দ্রুত রেসপন্স দেওয়ার প্রয়োজন।
FastAPI তে BackgroundTasks ব্যবহার করে আপনি রিকোয়েস্টের সাথে সম্পর্কিত কাজগুলো ব্যাকগ্রাউন্ডে চালাতে পারেন, যাতে প্রধান অ্যাপ্লিকেশন থ্রেড ব্লক না হয়।
Step 1: BackgroundTasks Import করা
FastAPI-তে BackgroundTasks ব্যবহারের জন্য আপনাকে প্রথমে BackgroundTasks ক্লাসটি ইনপোর্ট করতে হবে।
from fastapi import FastAPI, BackgroundTasks
Step 2: Background Task ফাংশন তৈরি করা
আপনি যেসব কাজ ব্যাকগ্রাউন্ডে করতে চান, সেগুলোর জন্য একটি আলাদা ফাংশন তৈরি করুন। এটি সাধারণত একটি সিঙ্ক্রোনাস ফাংশন হবে যা ব্যাকগ্রাউন্ডে কার্যকরী হবে।
উদাহরণ: ব্যাকগ্রাউন্ড টাস্ক ফাংশন
import time
def send_email(email: str):
time.sleep(5) # সিমুলেট করা হচ্ছে একটি সময়সাপেক্ষ কাজ
print(f"Email sent to {email}")
এখানে, send_email ফাংশনটি একটি ইমেইল পাঠানোর কাজ সিমুলেট করছে, যেটি ৫ সেকেন্ড সময় নেবে।
Step 3: BackgroundTasks ব্যবহার করা
এখন, FastAPI-র মধ্যে BackgroundTasks ব্যবহার করে এই ব্যাকগ্রাউন্ড ফাংশনটি কার্যকরী করতে হবে।
উদাহরণ: Background Task রিকোয়েস্টে যুক্ত করা
from fastapi import FastAPI, BackgroundTasks
app = FastAPI()
def send_email(email: str):
time.sleep(5)
print(f"Email sent to {email}")
@app.get("/send-notification/")
async def send_notification(background_tasks: BackgroundTasks, email: str):
background_tasks.add_task(send_email, email)
return {"message": "Notification sent in the background"}
এখানে, /send-notification/ রিকোয়েস্টে email প্যারামিটারটি ব্যাকগ্রাউন্ডে ইমেইল পাঠানোর কাজ শুরু করবে। background_tasks.add_task() ফাংশনটি ব্যাকগ্রাউন্ডে ফাংশনটি রান করানোর জন্য ব্যবহৃত হচ্ছে।
Step 4: Request এবং Background Task একসাথে ব্যবস্থাপনা
এখন যখন রিকোয়েস্ট আসবে, তখন ক্লায়েন্ট দ্রুত রেসপন্স পাবে, কিন্তু ইমেইল পাঠানোর কাজ ব্যাকগ্রাউন্ডে চলতে থাকবে।
রিকোয়েস্ট উদাহরণ:
GET /send-notification/?email=example@example.com
রেসপন্স:
{
"message": "Notification sent in the background"
}
এখানে, Email sent to example@example.com বার্তা ব্যাকগ্রাউন্ডে কনসোলে প্রদর্শিত হবে, কিন্তু ক্লায়েন্টকে অপেক্ষা করতে হবে না।
Step 5: Multiple Background Tasks
FastAPI তে আপনি একাধিক ব্যাকগ্রাউন্ড টাস্কও যুক্ত করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে একাধিক ব্যাকগ্রাউন্ড টাস্ক করা হচ্ছে।
উদাহরণ: একাধিক ব্যাকগ্রাউন্ড টাস্ক
from fastapi import FastAPI, BackgroundTasks
import time
app = FastAPI()
def send_email(email: str):
time.sleep(5)
print(f"Email sent to {email}")
def send_sms(phone: str):
time.sleep(3)
print(f"SMS sent to {phone}")
@app.get("/send-notifications/")
async def send_notifications(background_tasks: BackgroundTasks, email: str, phone: str):
background_tasks.add_task(send_email, email)
background_tasks.add_task(send_sms, phone)
return {"message": "Notifications sent in the background"}
এখানে, send_email এবং send_sms দুটি ব্যাকগ্রাউন্ড টাস্ক একসাথে কার্যকরী করা হচ্ছে।
রিকোয়েস্ট উদাহরণ:
GET /send-notifications/?email=example@example.com&phone=1234567890
রেসপন্স:
{
"message": "Notifications sent in the background"
}
এই রিকোয়েস্টের মাধ্যমে দুটি কাজ ব্যাকগ্রাউন্ডে চলে যাবে, কিন্তু ক্লায়েন্ট দ্রুত রেসপন্স পাবে।
Step 6: Background Task Logging
ব্যাকগ্রাউন্ড টাস্কের ফলাফল বা প্রগ্রেস ট্র্যাক করতে আপনি লগিং ব্যবহার করতে পারেন।
উদাহরণ: ব্যাকগ্রাউন্ড টাস্ক লগিং
import logging
from fastapi import FastAPI, BackgroundTasks
app = FastAPI()
logging.basicConfig(level=logging.INFO)
def send_email(email: str):
logging.info(f"Sending email to {email}...")
time.sleep(5)
logging.info(f"Email sent to {email}")
@app.get("/send-notification/")
async def send_notification(background_tasks: BackgroundTasks, email: str):
background_tasks.add_task(send_email, email)
return {"message": "Notification sent in the background"}
এখানে, ব্যাকগ্রাউন্ড টাস্কের প্রক্রিয়ার প্রতিটি ধাপে লগিং করা হয়েছে।
FastAPI তে Background Tasks ব্যবস্থাপনা খুবই শক্তিশালী এবং সহজ। এটি আপনার API-কে দ্রুত রেসপন্স দিতে সহায়তা করে, বিশেষত যখন আপনাকে দীর্ঘ সময় ধরে চলা কাজ করতে হয়। BackgroundTasks ব্যবহার করে আপনি ব্যাকগ্রাউন্ডে বিভিন্ন কাজ চালাতে পারেন, যেমন ইমেইল পাঠানো, ডাটা প্রসেসিং, অথবা সেকেন্ডারি কাজগুলো। এতে আপনার API এর কার্যক্ষমতা বৃদ্ধি পায় এবং ক্লায়েন্ট দ্রুত রেসপন্স পায়।
Read more